package com.zhongwang.mms.gen.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class TProjectExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public TProjectExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andProIdIsNull() {
            addCriterion("pro_id is null");
            return (Criteria) this;
        }

        public Criteria andProIdIsNotNull() {
            addCriterion("pro_id is not null");
            return (Criteria) this;
        }

        public Criteria andProIdEqualTo(Integer value) {
            addCriterion("pro_id =", value, "proId");
            return (Criteria) this;
        }

        public Criteria andProIdNotEqualTo(Integer value) {
            addCriterion("pro_id <>", value, "proId");
            return (Criteria) this;
        }

        public Criteria andProIdGreaterThan(Integer value) {
            addCriterion("pro_id >", value, "proId");
            return (Criteria) this;
        }

        public Criteria andProIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("pro_id >=", value, "proId");
            return (Criteria) this;
        }

        public Criteria andProIdLessThan(Integer value) {
            addCriterion("pro_id <", value, "proId");
            return (Criteria) this;
        }

        public Criteria andProIdLessThanOrEqualTo(Integer value) {
            addCriterion("pro_id <=", value, "proId");
            return (Criteria) this;
        }

        public Criteria andProIdIn(List<Integer> values) {
            addCriterion("pro_id in", values, "proId");
            return (Criteria) this;
        }

        public Criteria andProIdNotIn(List<Integer> values) {
            addCriterion("pro_id not in", values, "proId");
            return (Criteria) this;
        }

        public Criteria andProIdBetween(Integer value1, Integer value2) {
            addCriterion("pro_id between", value1, value2, "proId");
            return (Criteria) this;
        }

        public Criteria andProIdNotBetween(Integer value1, Integer value2) {
            addCriterion("pro_id not between", value1, value2, "proId");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusIsNull() {
            addCriterion("pro_production_status is null");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusIsNotNull() {
            addCriterion("pro_production_status is not null");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusEqualTo(Integer value) {
            addCriterion("pro_production_status =", value, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusNotEqualTo(Integer value) {
            addCriterion("pro_production_status <>", value, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusGreaterThan(Integer value) {
            addCriterion("pro_production_status >", value, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("pro_production_status >=", value, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusLessThan(Integer value) {
            addCriterion("pro_production_status <", value, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusLessThanOrEqualTo(Integer value) {
            addCriterion("pro_production_status <=", value, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusIn(List<Integer> values) {
            addCriterion("pro_production_status in", values, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusNotIn(List<Integer> values) {
            addCriterion("pro_production_status not in", values, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusBetween(Integer value1, Integer value2) {
            addCriterion("pro_production_status between", value1, value2, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProductionStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("pro_production_status not between", value1, value2, "proProductionStatus");
            return (Criteria) this;
        }

        public Criteria andProProjectIdIsNull() {
            addCriterion("pro_project_id is null");
            return (Criteria) this;
        }

        public Criteria andProProjectIdIsNotNull() {
            addCriterion("pro_project_id is not null");
            return (Criteria) this;
        }

        public Criteria andProProjectIdEqualTo(Integer value) {
            addCriterion("pro_project_id =", value, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProProjectIdNotEqualTo(Integer value) {
            addCriterion("pro_project_id <>", value, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProProjectIdGreaterThan(Integer value) {
            addCriterion("pro_project_id >", value, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProProjectIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("pro_project_id >=", value, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProProjectIdLessThan(Integer value) {
            addCriterion("pro_project_id <", value, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProProjectIdLessThanOrEqualTo(Integer value) {
            addCriterion("pro_project_id <=", value, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProProjectIdIn(List<Integer> values) {
            addCriterion("pro_project_id in", values, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProProjectIdNotIn(List<Integer> values) {
            addCriterion("pro_project_id not in", values, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProProjectIdBetween(Integer value1, Integer value2) {
            addCriterion("pro_project_id between", value1, value2, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProProjectIdNotBetween(Integer value1, Integer value2) {
            addCriterion("pro_project_id not between", value1, value2, "proProjectId");
            return (Criteria) this;
        }

        public Criteria andProRemarkIsNull() {
            addCriterion("pro_remark is null");
            return (Criteria) this;
        }

        public Criteria andProRemarkIsNotNull() {
            addCriterion("pro_remark is not null");
            return (Criteria) this;
        }

        public Criteria andProRemarkEqualTo(String value) {
            addCriterion("pro_remark =", value, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkNotEqualTo(String value) {
            addCriterion("pro_remark <>", value, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkGreaterThan(String value) {
            addCriterion("pro_remark >", value, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkGreaterThanOrEqualTo(String value) {
            addCriterion("pro_remark >=", value, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkLessThan(String value) {
            addCriterion("pro_remark <", value, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkLessThanOrEqualTo(String value) {
            addCriterion("pro_remark <=", value, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkLike(String value) {
            addCriterion("pro_remark like", value, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkNotLike(String value) {
            addCriterion("pro_remark not like", value, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkIn(List<String> values) {
            addCriterion("pro_remark in", values, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkNotIn(List<String> values) {
            addCriterion("pro_remark not in", values, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkBetween(String value1, String value2) {
            addCriterion("pro_remark between", value1, value2, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProRemarkNotBetween(String value1, String value2) {
            addCriterion("pro_remark not between", value1, value2, "proRemark");
            return (Criteria) this;
        }

        public Criteria andProStatusIsNull() {
            addCriterion("pro_status is null");
            return (Criteria) this;
        }

        public Criteria andProStatusIsNotNull() {
            addCriterion("pro_status is not null");
            return (Criteria) this;
        }

        public Criteria andProStatusEqualTo(Integer value) {
            addCriterion("pro_status =", value, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProStatusNotEqualTo(Integer value) {
            addCriterion("pro_status <>", value, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProStatusGreaterThan(Integer value) {
            addCriterion("pro_status >", value, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("pro_status >=", value, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProStatusLessThan(Integer value) {
            addCriterion("pro_status <", value, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProStatusLessThanOrEqualTo(Integer value) {
            addCriterion("pro_status <=", value, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProStatusIn(List<Integer> values) {
            addCriterion("pro_status in", values, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProStatusNotIn(List<Integer> values) {
            addCriterion("pro_status not in", values, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProStatusBetween(Integer value1, Integer value2) {
            addCriterion("pro_status between", value1, value2, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("pro_status not between", value1, value2, "proStatus");
            return (Criteria) this;
        }

        public Criteria andProCodeIsNull() {
            addCriterion("pro_code is null");
            return (Criteria) this;
        }

        public Criteria andProCodeIsNotNull() {
            addCriterion("pro_code is not null");
            return (Criteria) this;
        }

        public Criteria andProCodeEqualTo(String value) {
            addCriterion("pro_code =", value, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeNotEqualTo(String value) {
            addCriterion("pro_code <>", value, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeGreaterThan(String value) {
            addCriterion("pro_code >", value, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeGreaterThanOrEqualTo(String value) {
            addCriterion("pro_code >=", value, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeLessThan(String value) {
            addCriterion("pro_code <", value, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeLessThanOrEqualTo(String value) {
            addCriterion("pro_code <=", value, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeLike(String value) {
            addCriterion("pro_code like", value, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeNotLike(String value) {
            addCriterion("pro_code not like", value, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeIn(List<String> values) {
            addCriterion("pro_code in", values, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeNotIn(List<String> values) {
            addCriterion("pro_code not in", values, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeBetween(String value1, String value2) {
            addCriterion("pro_code between", value1, value2, "proCode");
            return (Criteria) this;
        }

        public Criteria andProCodeNotBetween(String value1, String value2) {
            addCriterion("pro_code not between", value1, value2, "proCode");
            return (Criteria) this;
        }

        public Criteria andProMatStatusIsNull() {
            addCriterion("pro_mat_status is null");
            return (Criteria) this;
        }

        public Criteria andProMatStatusIsNotNull() {
            addCriterion("pro_mat_status is not null");
            return (Criteria) this;
        }

        public Criteria andProMatStatusEqualTo(Integer value) {
            addCriterion("pro_mat_status =", value, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProMatStatusNotEqualTo(Integer value) {
            addCriterion("pro_mat_status <>", value, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProMatStatusGreaterThan(Integer value) {
            addCriterion("pro_mat_status >", value, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProMatStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("pro_mat_status >=", value, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProMatStatusLessThan(Integer value) {
            addCriterion("pro_mat_status <", value, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProMatStatusLessThanOrEqualTo(Integer value) {
            addCriterion("pro_mat_status <=", value, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProMatStatusIn(List<Integer> values) {
            addCriterion("pro_mat_status in", values, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProMatStatusNotIn(List<Integer> values) {
            addCriterion("pro_mat_status not in", values, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProMatStatusBetween(Integer value1, Integer value2) {
            addCriterion("pro_mat_status between", value1, value2, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProMatStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("pro_mat_status not between", value1, value2, "proMatStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusIsNull() {
            addCriterion("pro_pur_status is null");
            return (Criteria) this;
        }

        public Criteria andProPurStatusIsNotNull() {
            addCriterion("pro_pur_status is not null");
            return (Criteria) this;
        }

        public Criteria andProPurStatusEqualTo(Integer value) {
            addCriterion("pro_pur_status =", value, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusNotEqualTo(Integer value) {
            addCriterion("pro_pur_status <>", value, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusGreaterThan(Integer value) {
            addCriterion("pro_pur_status >", value, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("pro_pur_status >=", value, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusLessThan(Integer value) {
            addCriterion("pro_pur_status <", value, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusLessThanOrEqualTo(Integer value) {
            addCriterion("pro_pur_status <=", value, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusIn(List<Integer> values) {
            addCriterion("pro_pur_status in", values, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusNotIn(List<Integer> values) {
            addCriterion("pro_pur_status not in", values, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusBetween(Integer value1, Integer value2) {
            addCriterion("pro_pur_status between", value1, value2, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProPurStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("pro_pur_status not between", value1, value2, "proPurStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusIsNull() {
            addCriterion("pro_subcontract_status is null");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusIsNotNull() {
            addCriterion("pro_subcontract_status is not null");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusEqualTo(Integer value) {
            addCriterion("pro_subcontract_status =", value, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusNotEqualTo(Integer value) {
            addCriterion("pro_subcontract_status <>", value, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusGreaterThan(Integer value) {
            addCriterion("pro_subcontract_status >", value, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("pro_subcontract_status >=", value, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusLessThan(Integer value) {
            addCriterion("pro_subcontract_status <", value, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusLessThanOrEqualTo(Integer value) {
            addCriterion("pro_subcontract_status <=", value, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusIn(List<Integer> values) {
            addCriterion("pro_subcontract_status in", values, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusNotIn(List<Integer> values) {
            addCriterion("pro_subcontract_status not in", values, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusBetween(Integer value1, Integer value2) {
            addCriterion("pro_subcontract_status between", value1, value2, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProSubcontractStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("pro_subcontract_status not between", value1, value2, "proSubcontractStatus");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateIsNull() {
            addCriterion("pro_purchase_demand_date is null");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateIsNotNull() {
            addCriterion("pro_purchase_demand_date is not null");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateEqualTo(Date value) {
            addCriterion("pro_purchase_demand_date =", value, "proPurchaseDemandDate");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateNotEqualTo(Date value) {
            addCriterion("pro_purchase_demand_date <>", value, "proPurchaseDemandDate");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateGreaterThan(Date value) {
            addCriterion("pro_purchase_demand_date >", value, "proPurchaseDemandDate");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateGreaterThanOrEqualTo(Date value) {
            addCriterion("pro_purchase_demand_date >=", value, "proPurchaseDemandDate");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateLessThan(Date value) {
            addCriterion("pro_purchase_demand_date <", value, "proPurchaseDemandDate");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateLessThanOrEqualTo(Date value) {
            addCriterion("pro_purchase_demand_date <=", value, "proPurchaseDemandDate");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateIn(List<Date> values) {
            addCriterion("pro_purchase_demand_date in", values, "proPurchaseDemandDate");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateNotIn(List<Date> values) {
            addCriterion("pro_purchase_demand_date not in", values, "proPurchaseDemandDate");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateBetween(Date value1, Date value2) {
            addCriterion("pro_purchase_demand_date between", value1, value2, "proPurchaseDemandDate");
            return (Criteria) this;
        }

        public Criteria andProPurchaseDemandDateNotBetween(Date value1, Date value2) {
            addCriterion("pro_purchase_demand_date not between", value1, value2, "proPurchaseDemandDate");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}